$(function () {
    //定义全局变量
    window.pageSize = 5;
    window.pageNum = 1;
    window.keyword = "";
    // 在全局作用域内创建certIdArray
    window.certIdArray = new Array();
    //显示数据
    showPage();
});

function showPage() {
    $.ajax({
        url:"/cert/search/by/keyword",
        type:"post",
        data:{
            "pageNum":window.pageNum,
            "pageSize":window.pageSize,
            "keyword":window.keyword
        },
        dataType:"json",
        success:function (result) {
            if(result.result=="SUCCESS"){
                //解析数据
                $("#certTableBody").empty();
                // 获取数据集合
                var list = result.data.list;
                // 判断list是否有效
                if(list == null || list.length == 0) {
                    $("#certTableBody")
                        .append("<tr><td colspan='4' style='text-align:center;'>没有查询到数据！</td></tr>");

                    return ;
                }
                for(var i = 0; i < list.length; i++) {
                    var cert = list[i];

                    //数据
                    var numberTd = "<td>"+(i+1)+"</td>";
                    var checkBoxTd = "<td><input class='itemBox' certid='"+cert.id+"' type='checkbox'></td>";
                    var certNameTd = "<td>"+cert.name+"</td>";

                    //按钮
                    var checkBtn = "<button type='button' class='btn btn-success btn-xs'><i class=' glyphicon glyphicon-check'></i></button>";
                    var pencilBtn = "<button certId='"+cert.id+"' type='button' class='btn btn-primary btn-xs editBtn'><i class=' glyphicon glyphicon-pencil'></i></button>";
                    var remove = "<button certId='"+cert.id+"' type='button'  class='btn btn-danger btn-xs remove'><i class=' glyphicon glyphicon-remove'></i></button>";

                    var btnTd = "<td>"+checkBtn+" "+pencilBtn+" "+remove+"</td>";

                    var tr = "<tr>"+numberTd+checkBoxTd+certNameTd+btnTd+"</tr>";

                    // 将前面拼好的HTML代码追加到#certTableBody中
                    $("#certTableBody").append(tr);
                }

                //显示分页导航
                initPagination(result.data);
            }else{
                layer.msg(result.message);
            }
        }
    });
}

//声明函数封装导航条初始化操作
function initPagination(pageInfo) {

    // 声明变量存储分页导航条显示时的属性设置
    var paginationProperties = {
        num_edge_entries : 3,        //边缘页数
        num_display_entries : 5,      //主体页数
        callback : pageselectCallback, //回调函数
        items_per_page : window.pageSize,  //每页显示数据数量，就是pageSize
        current_page : (window.pageNum - 1),//当前页页码
        prev_text : "上一页",       //上一页文本
        next_text : "下一页"        //下一页文本
    };

    // 显示分页导航条
    $("#Pagination").pagination(pageInfo.total, paginationProperties);
}

// 在每一次点击“上一页”、“下一页”、“页码”时执行这个函数跳转页面
function pageselectCallback(pageIndex,jq) {
    // 将全局变量中的pageNum修改为最新值
    // pageIndex从0开始，pageNum从1开始
    window.pageNum = pageIndex + 1;
    // 调用分页函数重新执行分页
    showPage();
    return false;
}

//关键字查询
$("#searchBtn").click(function(){
    // 在单击响应函数中获取文本框中输入的数据
    var keyword = $.trim($("#keywordInput").val());

    // 验证输入数据是否有效
    if(keyword == null || keyword == "") {
        // 如果没输入，则查询全部
        window.keyword = "";
    }
    // 如果有效，赋值给window.keyword
    window.keyword = keyword;

    // 调用showPage()重新分页
    showPage();
});

// 全选/全不选功能
$("#summaryBox").click(function(){
    // 1.获取当前checkbox的选中状态
    var currentStatus = this.checked;
    // 2.设置itemBox的选中状态
    $(".itemBox").prop("checked",currentStatus);

});


//检查itemBox是否被选中
$("#batchRemoveBtn").click(function () {
    // 获取被选中的itemBox数组长度
    var length = $(".itemBox:checked").length;

    // 如果长度为0，说明没有选择itemBox
    if(length == 0) {
        layer.msg("请至少选择一条！");
        return ;
    }
});

$("#batchRemoveBtn").click(function () {
    // 获取被选中的itemBox数组长度
    var length = $(".itemBox:checked").length;

    // 如果长度为0，说明没有选择itemBox
    if(length == 0) {
        layer.msg("请至少选择一条！");
        return ;
    }



    // 遍历$(".itemBox:checked")
    $(".itemBox:checked").each(function(){

        var certId = $(this).attr("certid");

        // 存入数组
        window.certIdArray.push(certId);

    });

    // 调用函数打开模态框
    showRemoveConfirmModal();
});


function showRemoveConfirmModal() {
    // 1.将模态框显示出来
    $("#certconfirmModal").modal("show");

    //显示要删除的数据
    var requestBody = JSON.stringify(window.certIdArray);
    // 2.发送Ajax请求
    var ajaxResult = $.ajax({
        url:"/cert/get/list/by/id/list",
        type:"post",
        data:requestBody,
        contentType:"application/json;charset=UTF-8",
        dataType:"json",
        success:function (ajaxResult) {
            if(ajaxResult.result == "SUCCESS") {
                // 5.如果成功，显示数据
                // 3.清空#confirmModalTableBody
                $("#confirmModalTableBody").empty();
                // 4.填充#confirmModalTableBody
                var certList =ajaxResult.data
                for(var i = 0; i < certList.length; i++) {

                    // 5.获取角色相关数据
                    var cert = certList[i];

                    var id = cert.id;

                    var name = cert.name;

                    var trHTML = "<tr><td>"+id+"</td><td>"+name+"</td></tr>";

                    // 6.执行填充
                    $("#confirmModalTableBody").append(trHTML);
                }
            } else{
                layer.msg(ajaxResult.message);
                return null;
            }
        }
    });
}



//确认删除
$("#confirmModalBtn").click(function () {
    var requestBody = JSON.stringify(window.certIdArray);
    $.ajax({
        url:"/cert/batch/remove",
        type:"post",
        data:requestBody,
        contentType:"application/json;charset=UTF-8",
        dataType:"json",
        success:function(response){
            var result = response.result;
            if(result == "SUCCESS") {
                layer.msg("操作成功！");
                // 如果删除成功，则重新调用分页方法
                showPage();
            }
            if(result == "FAILED") {
                layer.msg(response.message);
            }
            // 不管成功还是失败，都需要关掉模态框
            $("#certconfirmModal").modal("hide");

        },
        "error":function(response){
            layer.msg(response.message);
        }
    });
})

//单条删除
$('#certTableBody').on("click",".remove",function () {
    var certId = $(this).attr("certId");
    // 存入全局变量数组
    window.certIdArray = new Array();
    window.certIdArray.push(certId);
    // 打开模态框（后续所有操作都和批量删除一样）
    showRemoveConfirmModal();
});